import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

public class Client {
    public static void main(String[] args) throws IOException, IOException {
        Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
        System.out.println("客户端 socket 返回=" + socket.getClass());
        //2. 连接上后， 生成 Socket, 通过 socket.getOutputStream()
        // 得到 和 socket 对象关联的输出流对象
        OutputStream outputStream = socket.getOutputStream();
        //3. 通过输出流， 写入数据到 数据通道, 使用字符流
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
        bufferedWriter.write("admin,123456");
        bufferedWriter.newLine();//插入一个换行符，表示写入的内容结束,
        bufferedWriter.flush();// 如果使用的字符流，需要手动刷新， 否则数据不会写入数据通道
        //4. 获取和 socket 关联的输入流. 读取数据(字符)， 并处理
        InputStream inputStream = socket.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String s = bufferedReader.readLine();
        if (!s.equals("accept")){//被拒绝 退出
            bufferedReader.close();//关闭外层流
            bufferedWriter.close();
            socket.close();
            System.out.println("客户端退出.....");
        }
        System.out.println("accept...");
        //发送服务请求号，“1”表示请求文件传输服务，“2”表示请求数据库查询服务；
        bufferedWriter.write("1");
        System.out.println("请求服务...");
        bufferedWriter.newLine();//插入一个换行符， 表示写入的内容结束, 注意， 要求对方使用 readLine()!!!!
        bufferedWriter.flush();// 如果使用的字符流， 需要手动刷新， 否则数据不会写入数据通道


        String ret1 = bufferedReader.readLine();//客户端收到“finish”串后，向服务器端发送“byebye”,终止连接
        if (ret1.equals("finish")){
            bufferedWriter.write("byebye");
            System.out.println("byebye");
            bufferedWriter.newLine();
            bufferedWriter.flush();
        }
        //5. 关闭流对象和 socket, 必须关闭
        bufferedReader.close();//关闭外层流
        bufferedWriter.close();
        socket.close();
        System.out.println("客户端退出.....");
    }
}
